Conversation
- Agregar OrchestratorAgent para coordinar ejecución de agentes Related CGAI-13
…ltiples agentes y agregar sus hallazgos. Implementación de la lógica en AnalysisService para utilizar OrchestratorAgent en lugar de agentes individuales.
…OrchestratorAgent(paralelo)
… orquestación de agentes.
Yosoyepa
approved these changes
Dec 4, 2025
Removed the Performance Agent analysis from the orchestrator process.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📝 Descripción
Implementa el OrchestratorAgent en la capa de dominio y refactoriza el flujo de análisis para que la ejecución de agentes se haga de forma paralela y desacoplada desde la capa de aplicación.
Cambios principales:
Agrega OrchestratorAgent para coordinar la ejecución paralela de agentes (SecurityAgent, QualityAgent, StyleAgent y PerformanceAgent) utilizando ThreadPoolExecutor.
Refactoriza AnalysisService para delegar la ejecución de agentes al OrchestratorAgent, manteniendo el mismo contrato de entrada/salida y el cálculo de CodeReview.
Implementa AgentFactory como Singleton para registrar y crear instancias de agentes de análisis, inyectando el EventBus compartido.
Mantiene la lógica de puntuación de calidad (penalizaciones por severidad) pero ahora centralizada en el orquestador.
🎯 Historia de Usuario Relacionada
CGAI-13: OrchestratorAgent dominio + integración con AnalysisService
🧪 Cómo se Probó
Tests unitarios existentes (pytest)
Tests de integración de /api/v1/analyze pasando correctamente
Probado manualmente con archivos .py válidos e inválidos (validaciones de tamaño, extensión y contenido mínimo)
Cobertura: 93.97% (cumple umbral 75%)
✅ Checklist Previo al Merge
Mi código sigue las convenciones del proyecto
He agregado/ajustado tests que cubren mis cambios (o se mantienen cubiertos por los existentes)
Todos los tests pasan localmente (pytest)
He actualizado la documentación relevante (docstrings en agentes y orquestador)
Mis commits siguen Conventional Commits
He sincronizado mi rama con develop
He ejecutado linting localmente (black, isort, flake8 vía GitHub Actions)
He verificado coverage > 75% (actual: 93.97%)
📚 Notas Adicionales
AnalysisService ahora solo valida entrada, construye el AnalysisContext, llama al OrchestratorAgent y persiste el CodeReview, respetando la arquitectura aplicación → dominio.
OrchestratorAgent:
Ejecuta agentes en paralelo con ThreadPoolExecutor.
Maneja timeouts y errores individuales con handle_agent_failure sin detener el análisis completo.
Calcula el quality_score usando la misma tabla de penalizaciones que existía antes (CRITICAL/HIGH/MEDIUM/LOW).
AgentFactory:
Implementa un patrón Singleton con threading.Lock.
Registra por defecto SecurityAgent, QualityAgent, StyleAgent y PerformanceAgent.
El registro de PerformanceAgent queda comentado hasta que el agente esté actualizado.
Inyecta opcionalmente event_bus y config a los agentes, con fallback tolerante si la firma del init no los soporta.
No se cambia la API pública del endpoint /api/v1/analyze ni el modelo de CodeReview; solo se modifica la forma interna en que se ejecutan los agentes.